#ifndef __STDDATABASE_H__
#define __STDDATABASE_H__

#include <string>
#include <vector>

// 定义查询结果的结构体
struct QueryResult
{
    std::vector<std::vector<std::string>> rows; // 行（二维数组）
    std::vector<std::string> columnName; // 列名（列名只有一行，所以用一维数组）
};

// 抽象出来的数据库虚基类（只提供虚函数接口，便于后面既可以用sqlite3去继承实现，也可以用MySQL去继承实现）
class StdDataBase
{
public:
    // 虚析构
    virtual ~StdDataBase() {};

    // 连接数据库
    virtual bool connectDB(const std::string &connStr) = 0;

    // 执行Sql执行语句(exec)
    virtual bool executeSql(const std::string &sql) = 0;

    // 执行Sql查询语句(select)
    virtual QueryResult querySql(const std::string &sql) = 0;

    // 关闭数据库连接
    virtual void close() = 0;
};


#endif // __STDDATABASE_H__